package com.vvv.designpattern.items.composite;

/**
 * @author vvv
 * @date 2023-11-18 15 25
 * discription 组合模式；将对象组合成树形结构表示“部分-整体”的层次结构，也就是构建成树形结构
 * 这里我们的需求是：将数据库的商品类目数据构建成商品类目树
 *
 * AbstractProductItem 是组合模式的抽象角色，所以节点需要继承这个类，同时也是访问者模式的被访问者抽象角色
 */
public abstract class AbstractProductItem {
    /**
     * 增加前节点的商品类目
     * @param item
     */
    protected void addProductItem(AbstractProductItem item) {
        throw new UnsupportedOperationException("No Support child add !");
    }

    /**
     * 删除当前节点的商品类目
     * @param item
     */
    protected void delProductChild(AbstractProductItem item) {
        throw new UnsupportedOperationException("No Support child remove !");
    }
}
